package cn.ztydata.teachingsystem.heaven.service;

import cn.ztydata.teachingsystem.common.Page;
import cn.ztydata.teachingsystem.exception.ServiceException;
import cn.ztydata.teachingsystem.heaven.common.WebContext;
import cn.ztydata.teachingsystem.heaven.cons.Roles;
import cn.ztydata.teachingsystem.heaven.dao.ClassGroupDao;
import cn.ztydata.teachingsystem.heaven.entity.Class;
import cn.ztydata.teachingsystem.heaven.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * ClassGroupService
 *
 * @author lyj
 * @since 2015/5/5
 */
@Service
public class ClassGroupService extends BaseService {
    @Autowired
    private ClassGroupDao classGroupDao;
    @Autowired
    private WebContext webContext;


    /**
     * 获取班级群组列表
     * @param pageNum 当前页码
     * @param pageSize 每页条数
     * @param tag 标记 0当前 1历史
     * @param search 关键字（搜索历史班级名称和班号）
     * @param teacherNum 教师工号
     * @return page
     * @author lyj
     * @since 2015-5-5
     */
    public Page<Class> getAllClasses(final int pageNum, final int pageSize, final int tag, final String search, final String teacherNum) {
        if (webContext.getRole() != Roles.TEACHER) {
            log.debug("webContext.getRole() != Roles.TEACHER),登录用户没有权限使用该接口！登录用户角色->{}");
            log.warn("登录用户没有权限使用该接口！登录用户角色->{}", webContext.getRole());
            throw new ServiceException("权限错误！");
        }
        if (tag == 0) {
            //获取当前班级群组列表
            log.debug("tag == 0,获取当前班级群组列表");
            return classGroupDao.getAllClasses(pageNum, pageSize, teacherNum);
        } else {
            //获取历史班级群组列表
            log.debug("tag != 0,获取当前班级群组列表");
            return classGroupDao.getHistoryClasses(pageNum, pageSize, search, teacherNum);
        }
    }


    /**
     * 获取班级群组明细头部
     * @param classId 班级ID
     * @param tag 标记0当前 1历史
     * @return Class
     * @author lyj
     * @since 2015-5-5
     */
    public Class getClassTop(final long classId, final int tag, final User userInfo) {
        //验证权限
        if (webContext.getRole() != Roles.TEACHER && webContext.getRole() != Roles.STUDENT) {
            log.debug("webContext.getRole() != Roles.TEACHER && webContext.getRole() != Roles.STUDENT，webContext.getRole()角色不能为“教师”，且不能为“学生”");
            log.warn("登录用户没有权限使用该接口！登录用户角色->{}", webContext.getRole());
            throw new ServiceException("权限错误！");
        }

        //判断登录用户是否可以获取该班级群组信息
        if (classGroupDao.checkGroupIdIsNum(classId, userInfo.getNumber()) == 0) {
            throw new ServiceException("权限错误！");
        }

        if (tag == 0) {
            //获取当前班级群组明细头部
            log.debug("获取当前班级群组明细头部tag == 0");
            return classGroupDao.getClassTop(classId);
        } else {
            //获取历史班级群组明细头部
            log.debug("获取历史班级群组明细头部tag != 0");
            return classGroupDao.getHistoryClassTop(classId);
        }
    }
}
